package dao

import (
	"time"
)

// 这是 Feedback 的全局公开dao对象，被service层调用!
var FeedbackDao = feedbackDao{}

// 意见反馈表
// 这是 feedback表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Feedback struct {
	Id         int32     `json:"id" form:"id" v:"id" db:"id"`
	UserId     int32     `json:"user_id" form:"user_id" v:"user_id" db:"user_id"`                 // 用户表的用户ID
	Username   string    `json:"username" form:"username" v:"username" db:"username"`             // 用户名称
	Mobile     string    `json:"mobile" form:"mobile" v:"mobile" db:"mobile"`                     // 手机号
	FeedType   string    `json:"feed_type" form:"feed_type" v:"feed_type" db:"feed_type"`         // 反馈类型
	Content    string    `json:"content" form:"content" v:"content" db:"content"`                 // 反馈内容
	Status     int32     `json:"status" form:"status" v:"status" db:"status"`                     // 状态
	HasPicture int8      `json:"has_picture" form:"has_picture" v:"has_picture" db:"has_picture"` // 是否含有图片
	PicUrls    string    `json:"pic_urls" form:"pic_urls" v:"pic_urls" db:"pic_urls"`             // 图片地址列表，采用JSON数组格式
	AddTime    time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`             // 创建时间
	UpdateTime time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"` // 更新时间
	Deleted    int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`    // 逻辑删除

}

// 注意:这是 Feedback 的私有dao对象，只能在dao层内使用!
type feedbackDao struct {
	InsertTemplate func(arg Feedback) (int64, error)          //插入一条记录
	UpdateTemplate func(arg Feedback) (int64, error)          //更新一条记录
	DeleteTemplate func(id int64) (int64, error)              `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Feedback, error)           `args:"id"` //根据传入的主键获取一条记录
	List           func(arg FeedbackList) ([]Feedback, error) //模糊分页查询
}

/*
// 这是 feedback 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type FeedbackPostman struct {
id
user_id
username
mobile
feed_type
content
status
has_picture
pic_urls
add_time
update_time
deleted

}*/

// 这是 feedback 表的批量请求参数
type FeedbackReq struct {
	List []Feedback `json:"list" form:"list"`
}

// 这是 feedbackDao.List()方法的请求参数
type FeedbackList struct {
	Page
}
